home *** CD-ROM | disk | FTP | other *** search
/ Giga Games 1 / Giga Games.iso / net / usenet / volume11 / tinymud2 / part01 next >
Encoding:
Internet Message Format  |  1990-08-10  |  54.7 KB

  1. Path: uunet!zephyr.ens.tek.com!tekred!saab!billr
  2. From: billr@saab.CNA.TEK.COM (Bill Randle)
  3. Newsgroups: comp.sources.games
  4. Subject: v11i005:  tinymud2 - user-extendible multi-user adventure (v1.5.4), Part01/10
  5. Message-ID: <6050@tekred.CNA.TEK.COM>
  6. Date: 30 Jul 90 16:42:55 GMT
  7. Sender: news@tekred.CNA.TEK.COM
  8. Lines: 1022
  9. Approved: billr@saab.CNA.TEK.COM
  10.  
  11. Submitted-by: James Aspnes <asp@cs.cmu.edu>
  12. Posting-number: Volume 11, Issue 5
  13. Archive-name: tinymud2/Part01
  14. Supersedes: tinymud: Volume 8, Issue 80-83
  15.  
  16.     [Several files had very long lines that I know from experience
  17.      would have been truncated or had a '\n' inserted, so the
  18.      files as unpacked have addition newlines inserted in them.
  19.      The joinspl.sh script restores these files to their original
  20.      condition. Three mud client programs will be posted following
  21.      this package as "tinyclients". They include a client using
  22.      emacs, one using curses for Unix and one for vms. One can, of
  23.      course use telnet in a pinch. Also, there si a newsgroup
  24.      "alt.mud" for mud related topics.
  25.      This posting also includes the doc files, which are not
  26.      included with the original ftpable source files.    -br]
  27.  
  28. #! /bin/sh
  29. # This is a shell archive.  Remove anything before this line, then unpack
  30. # it by saving it into a file and typing "sh file".  To overwrite existing
  31. # files, type "sh file -c".  You can also feed this as standard input via
  32. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  33. # will see the following message at the end:
  34. #        "End of archive 1 (of 10)."
  35. # Contents:  README MANIFEST comb.sed config_h.spl tinymud.ps.xac
  36. # Wrapped by billr@saab on Fri Jul 27 15:27:42 1990
  37. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  38. if test -f 'README' -a "${1}" != "-c" ; then 
  39.   echo shar: Will not clobber existing file \"'README'\"
  40. else
  41. echo shar: Extracting \"'README'\" \(5964 characters\)
  42. sed "s/^X//" >'README' <<'END_OF_FILE'
  43. XThis is TinyMUD version 1.5.4, a user-extendible
  44. Xmulti-user adventure game.
  45. X
  46. XSee the file copyright.h for information on the copyright under which
  47. XTinyMUD 1.5.4 is distributed.  See the file CHANGES for a list of
  48. Xchanges made in each release.
  49. X
  50. X
  51. XCompiling TinyMUD:
  52. X
  53. XThe code is written in ANSI C, and is known to compile and run under
  54. XMach (a variant of 4.3BSD Unix) on a Sun-3 and uVax-2 using GCC, on on
  55. Xan IBM RT using hc, and on a DECstation 3100 using the MipsCo C
  56. Xcompiler.  It has also been compiled on a Vax running a fairly generic
  57. X4.2BSD system, and on a NeXT machine.
  58. X
  59. XI do not expect that it will work well on non-BSD systems, although
  60. Xmost of the BSD-isms are concentrated in interface.c and in a few
  61. Xcalls here and there to bzero() and such.  Please let me know if you
  62. Xmanage to port TinyMUD to another type of system.
  63. X
  64. X
  65. XPrograms contained in the distribution:
  66. X
  67. Xnetmud
  68. X
  69. X This is the actual server program; it is invoked as 
  70. X
  71. X    netmud source-file dump-file [port [log-file]]
  72. X
  73. X If port is not specified it defaults to 4201.  The initial database
  74. Xwill be read in from source-file, which must contain at least the two
  75. Xobjects in minimal.db to work well.  The file small.db, which contains
  76. Xthe core of the original TinyMUD universe, may be a better place to
  77. Xstart a new universe from.  The netmud process will write a checkpoint
  78. Xout to dump-file every 3600 seconds; the interval can be changed by
  79. Xsetting DUMP_INTERVAL in config.h.
  80. X
  81. X
  82. Xnetmud.conc & concentrate
  83. X
  84. X This is the same as netmud, but allows up to 3600 users at one time.
  85. XThe concentrate program listens on the external port and mulitplexes
  86. Xup to 60 connections into the server program.  There can be up to 60
  87. Xconcentrators, although in practice you'll seldom need more than a
  88. Xhalf-dozen.  It is invoked as follows (ext-port is the port number
  89. Xusers telnet to, int-port is the port number the server uses to
  90. Xcommunicate with the concetrators):
  91. X
  92. X    netmud.conc  source-file dump-file [ext-port int-port [log-file]]
  93. X
  94. Xsanity-check
  95. X
  96. X Usage: sanity-check < source-file
  97. X
  98. X Performs several simple consistency checks on the specified database
  99. X file.  Also useful for detecting surplus WIZARDs and people with
  100. X excess pocket change.
  101. X
  102. X
  103. Xextract
  104. X
  105. X This is the program that was used to create the file small.db
  106. Xdistributed with TinyMUD.  It is used to extract a part of a database
  107. Xas a connected whole.
  108. X
  109. XExamples:
  110. X
  111. X extract < source-file > output-file
  112. X
  113. X Extracts location #0, player #1, and all objects owned by player #1;
  114. X these objects are renumbered into a contiguous block starting at 0 and
  115. X are written out as a new database file that preserves all of their
  116. X inter-relationships.  Some objects may become "orphaned" as a result
  117. X of having their home or location disappear; these objects are moved to
  118. X location #0.  With some combinations of command line arguments it is
  119. X possible to include an object without including its owner; in this
  120. X case player #1 "inherits" the object.  Exits are only extracted if
  121. X both their source and destination rooms are extracted.
  122. X
  123. X extract 2 < source-file > output-file
  124. X
  125. X Extracts location #0, object #1 and anything it owns, and object #2
  126. X and anything it owns.
  127. X
  128. X extract number2 < source-file > output-file
  129. X
  130. X Same as above, but (assuming player #2 is named number2) extracts
  131. X players by name.
  132. X
  133. X extract 2 -5 < source-file > output-file.
  134. X
  135. X As above, but does not extract object #5 even if it is owned by #1 or
  136. X #2.
  137. X
  138. X extract 2 5991 195 -198 3391 -12 12915 < source-file > object-file
  139. X
  140. X Extracts #0, #1, #2, #195, #3391, #5991, #12915 and anything they
  141. X own, except #12 and #198.
  142. X
  143. XThe keyword "all" can be specified as an argument to include
  144. Xeverything by default, e.g.:
  145. X
  146. X extract all -198
  147. X
  148. X Extracts everything except object #198 and anything it owns.
  149. X
  150. X extract all -198 5
  151. X
  152. X Extracts everything except object #198 and anything it owns, but
  153. X includes object #5 even if #198 owns it.
  154. X Other keywords: players reachable norecycle a<num> b<num>.
  155. X Players: specifies that all players are kept (but not necessarily
  156. X what they own).
  157. X Reachable: specifies that rooms not reachable by some combination of
  158. X exits from room #0 are not extracted unless specifically included.
  159. X Norecycle: specifies that players, objects, and things in the 
  160. X recycling center (defined as the home of player 'Recycler') are not
  161. X kept unless specifically included.  'Norecycle' overrides 'players',
  162. X so
  163. X
  164. X    extract players norecycle 
  165. X
  166. X would extract only those players not in the recycling center.
  167. X
  168. X a<num> (above) includes all objects with id numbers greater than
  169. X or equal to <num>
  170. X b<num> (below) includes all objects with id numbers less than
  171. X or equal to <num>
  172. X Putting it all together, here is how the Daytime Islandia DB is
  173. X built from the previous night's database:
  174. X    extract norecycle reachable players b1370 \
  175. X    -274 -560 -809 1384 1403 1404 1406 1505 \
  176. X    Tinker Lynx Tygling Three Janitor Mav \
  177. X    $WINNER \
  178. X    < islandia.db.new > day.db
  179. X    
  180. X Whichs keeps: all players not in the recycling center, all objects
  181. X below 1370 except for 274, 560, and 809, and also includes 1403, 1404,
  182. X 1406, 1505, everything owned by Tinker, Lynx, Tygling, Three, Janitor,
  183. X Mav, and everything owned by the lottery winner (name specified by
  184. X Shell variable WINNER). 
  185. X
  186. Xdump
  187. X
  188. X Usage: dump [owner] < db-file
  189. X
  190. X With no arguments, prints out every object in db-file.  With one
  191. X argument (a number) prints out every object with that owner.
  192. X
  193. X
  194. Xdecompress
  195. X
  196. X Usage: decompress < compressed-db-file > uncompressed-db-file
  197. X
  198. X Removes compression from a database file that has been generated by
  199. X netmud using the -DCOMPRESS compile-time option.  
  200. X
  201. X
  202. Xrestart-cmu, restart-day, restart-night
  203. X
  204. X The shell scripts used at CMU to restart the TinyMUD
  205. X server.  Useful for making sure that back versions of the database are
  206. X always available.
  207. X
  208. X
  209. XI hope that you enjoy using TinyMUD.  
  210. X
  211. X--Jim Aspnes, March 29th, 1990.             1.5.3
  212. X--Scott Goehring, April 3rd, 1990.        1.5.3A
  213. X--Michael Mauldin & Russ Smith, June 25, 1990.    1.5.4
  214. END_OF_FILE
  215. if test 5964 -ne `wc -c <'README'`; then
  216.     echo shar: \"'README'\" unpacked with wrong size!
  217. fi
  218. # end of 'README'
  219. fi
  220. if test -f 'MANIFEST' -a "${1}" != "-c" ; then 
  221.   echo shar: Will not clobber existing file \"'MANIFEST'\"
  222. else
  223. echo shar: Extracting \"'MANIFEST'\" \(1695 characters\)
  224. sed "s/^X//" >'MANIFEST' <<'END_OF_FILE'
  225. X   File Name        Archive #    Description
  226. X-----------------------------------------------------------
  227. X CHANGES                    9    
  228. X MANIFEST                   1    This shipping list
  229. X Makefile                   4    
  230. X README                     1    
  231. X boolexp.c                 10    
  232. X comb.sed                   1    
  233. X compress.c                 9    
  234. X conc.c                     8    
  235. X config_h.spl               1    
  236. X copyright.h               10    
  237. X create.c                   9    
  238. X db.c                       7    
  239. X db.h                       9    
  240. X decompress.c              10    
  241. X do_gripes                 10    
  242. X dump.c                     8    
  243. X externs.h                 10    
  244. X extract.c                  8    
  245. X game.c                     7    
  246. X help.c                    10    
  247. X help.txt                  10    
  248. X interface.c                5    
  249. X interface.h               10    
  250. X joinspl.sh                 5    
  251. X look.c                     3    
  252. X match.c                    9    
  253. X match.h                   10    
  254. X minimal.db                 8    
  255. X move.c                     9    
  256. X oldinterface.c             8    
  257. X player.c                   6    
  258. X player_list.c              2    
  259. X predicates.c               9    
  260. X restart-cmu                7    
  261. X restart-day               10    
  262. X restart-night             10    
  263. X rob.c                     10    
  264. X sanity-check.c            10    
  265. X set.c                      6    
  266. X small.db.README           10    
  267. X smalldb.spl                2    
  268. X speech.c                   9    
  269. X stringutil.c              10    
  270. X tiny.docs                  6    
  271. X tinymud.ps.xaa             4    
  272. X tinymud.ps.xab             3    
  273. X tinymud.ps.xac             1    
  274. X tinymud.tex                7    
  275. X unparse.c                 10    
  276. X utils.c                   10    
  277. X wiz.c                      5    
  278. END_OF_FILE
  279. if test 1695 -ne `wc -c <'MANIFEST'`; then
  280.     echo shar: \"'MANIFEST'\" unpacked with wrong size!
  281. fi
  282. # end of 'MANIFEST'
  283. fi
  284. if test -f 'comb.sed' -a "${1}" != "-c" ; then 
  285.   echo shar: Will not clobber existing file \"'comb.sed'\"
  286. else
  287. echo shar: Extracting \"'comb.sed'\" \(32 characters\)
  288. sed "s/^X//" >'comb.sed' <<'END_OF_FILE'
  289. X/|$/{
  290. X:a
  291. XN
  292. Xs/|\n//
  293. X}
  294. X/|$/{
  295. Xba
  296. X}
  297. END_OF_FILE
  298. if test 32 -ne `wc -c <'comb.sed'`; then
  299.     echo shar: \"'comb.sed'\" unpacked with wrong size!
  300. fi
  301. # end of 'comb.sed'
  302. fi
  303. if test -f 'config_h.spl' -a "${1}" != "-c" ; then 
  304.   echo shar: Will not clobber existing file \"'config_h.spl'\"
  305. else
  306. echo shar: Extracting \"'config_h.spl'\" \(6069 characters\)
  307. sed "s/^X//" >'config_h.spl' <<'END_OF_FILE'
  308. X#include "copyright.h"
  309. X
  310. X/* room number of player start location */
  311. X#define PLAYER_START ((dbref) 0)
  312. X
  313. X/* minimum cost to create various things */
  314. X#define OBJECT_COST 10
  315. X#define EXIT_COST 1
  316. X#define LINK_COST 1
  317. X#define ROOM_COST 10
  318. X
  319. X/* cost for various special commands */
  320. X#ifdef TINYHELL
  321. X# define FIND_COST 20
  322. X#else  TINYHELL
  323. X# define FIND_COST 100
  324. X#endif TINYHELL
  325. X
  326. X#define PAGE_COST 1
  327. X
  328. X/* limit on player name length */
  329. X#define PLAYER_NAME_LIMIT 16
  330. X
  331. X/* magic cookies */
  332. X#define NOT_TOKEN '!'
  333. X#define AND_TOKEN '&'
  334. X#define OR_TOKEN '|'
  335. X#define THING_TOKEN 'x'
  336. X#define LOOKUP_TOKEN '*'
  337. X#define NUMBER_TOKEN '#'
  338. X#define ARG_DELIMITER '='
  339. X
  340. X/* magic command cookies */
  341. X#define SAY_TOKEN '"'
  342. X#define POSE_TOKEN ':'
  343. X
  344. X/* amount of object endowment, based on cost */
  345. X#define MAX_OBJECT_ENDOWMENT 100
  346. X#define OBJECT_ENDOWMENT(cost) (((cost)-5)/5)
  347. X
  348. X/* amount at which temple stops being so profitable */
  349. X#define MAX_PENNIES 10000
  350. X
  351. X/* penny generation parameters */
  352. X#define PENNY_RATE 10        /* 1/chance of getting a penny per room */
  353. X
  354. X/* costs of kill command */
  355. X#define KILL_BASE_COST 100    /* prob = expenditure/KILL_BASE_COST */
  356. X#define KILL_MIN_COST 10
  357. X#define KILL_BONUS 50        /* paid to victim */
  358. X
  359. X/* delimiter for lists of exit aliases */
  360. X#define EXIT_DELIMITER ';'
  361. X
  362. X/* timing stuff */
  363. X#ifdef TINYHELL
  364. X# define DUMP_INTERVAL 21600    /* 6 hours (seconds) between dumps */
  365. X#else  TINYHELL
  366. X# define DUMP_INTERVAL 10800   /* 3 hours between dumps */
  367. X#endif TINYHELL
  368. X
  369. X#define COMMAND_TIME_MSEC 100    /* time slice length in milliseconds */
  370. X#define COMMAND_BURST_SIZE 10    /* commands allowed per user in a burst */
  371. X#define COMMANDS_PER_TIME 1    /* commands per time slice after burst */
  372. X
  373. X/* maximum amount of queued output */
  374. X#define MAX_OUTPUT 16384
  375. X
  376. X#ifdef TINYHELL
  377. X/*---------------- TinyHELL Welcome, Registration messages ----------------*/
  378. X# define TINYPORT 6250
  379. X# define INTERNAL_PORT 6249
  380. X# define WELCOME_MESSAGE "Welcome to TinyHELL\nTo connect to your existing|
  381. X character, enter \"connect name password\"\nTo create a new character, enter|
  382. X \"create name password\"\nUse the news command to get up-to-date news on|
  383. X program changes.\n\nYou can disconnect using the QUIT command, which must be|
  384. X capitalized as shown.\n\nUse the WHO command to find out who is currently|
  385. X active.\n\n"
  386. X# define REGISTER_MESSAGE "In order to get an account, send mail to|
  387. X tinyhell-request@uokmax.ecn.uoknor.edu\nwith the following lines:\n\nPlayer:|
  388. X <playername>\nPassword: <password>\n\nYour character SHOULD be created in 72|
  389. X hours.\n\n"
  390. X#endif TINYHELL
  391. X
  392. X#ifdef ISLANDIA
  393. X/*---------------- Islandia Welcome, Registration messages ----------------*/
  394. X# define TINYPORT 2323
  395. X# define INTERNAL_PORT 2322
  396. X# define WELCOME_MESSAGE "Welcome to Islandia\nTo connect to your existing|
  397. X character, enter \"connect name password\"\nTo create a new character, enter|
  398. X \"create name password\"\nUse the news command to get up-to-date news on|
  399. X program changes.\n\nYou can disconnect using the QUIT command, which must be|
  400. X capitalized as shown.\n\nUse the WHO command to find out who is currently|
  401. X active.\n\n"
  402. X# define REGISTER_MESSAGE "You should not see this message\n\n"
  403. X#endif ISLANDIA
  404. X
  405. X#ifndef TINYPORT
  406. X/*---------------- Generic Welcome, Registration messages ----------------*/
  407. X# define TINYPORT 4201
  408. X# define INTERNAL_PORT 4200
  409. X# define WELCOME_MESSAGE "Welcome to TinyMUD\nTo connect to your existing|
  410. X character, enter \"connect name password\"\nTo create a new character, enter|
  411. X \"create name password\"\nUse the news command to get up-to-date news on|
  412. X program changes.\n\nYou can disconnect using the QUIT command, which must be|
  413. X capitalized as shown.\n\nUse the WHO command to find out who is currently|
  414. X active.\n\n"
  415. X# define REGISTER_MESSAGE "You must send mail to the TinyMUD system|
  416. X administrator to get an account.\nUnfortunately, he or she forgot to set an|
  417. X Email address in this part of the\n code.  Good luck!\n\n"
  418. X#endif  TINYPORT
  419. X
  420. X#define LEAVE_MESSAGE "\n***Disconnected***\n"
  421. X
  422. X#define QUIT_COMMAND "QUIT"
  423. X#define WHO_COMMAND "WHO"
  424. X#define PREFIX_COMMAND "OUTPUTPREFIX"
  425. X#define SUFFIX_COMMAND "OUTPUTSUFFIX"
  426. X
  427. X#ifdef ISLANDIA
  428. X# define HELP_FILE    "/clients/Islandia/lib/help.txt"
  429. X# define NEWS_FILE    "/clients/Islandia/lib/news.txt"
  430. X# define MOTD_FILE    "/clients/Islandia/lib/motd.txt"
  431. X# define CONNECT_FILE    "/clients/Islandia/lib/connect.txt"
  432. X# define WIZARD_FILE    "/clients/Islandia/lib/tinker.txt"
  433. X# define LOG_FILE    "/clients/Islandia/lib/islandia.log"
  434. X#endif ISLANDIA
  435. X
  436. X#ifdef TINYHELL
  437. X# define HELP_FILE    "/usr/games/lib/tinyhell/help.txt"
  438. X# define NEWS_FILE    "/usr/games/lib/tinyhell/news.txt"
  439. X# define MOTD_FILE    "/usr/games/lib/tinyhell/motd.txt"
  440. X# define WIZARD_FILE    "/usr/games/lib/tinyhell/tinker.txt"
  441. X# define LOG_FILE    "/usr/games/lib/tinyhell/gnu.log"
  442. X#endif TINYHELL
  443. X
  444. X#ifndef HELP_FILE
  445. X# define HELP_FILE    "help.txt"
  446. X# define NEWS_FILE    "news.txt"
  447. X# define MOTD_FILE    "motd.txt"
  448. X# define WIZARD_FILE    "wizard.txt"
  449. X# define LOG_FILE    "tinymud.log"
  450. X#endif HELP_FILE
  451. X
  452. X#ifdef LOCKOUT
  453. X#define LOCKOUT_FILE "lockout.txt"
  454. X#endif /* LOCKOUT */
  455. X
  456. X/*
  457. X * This section defines the flag markers used by unparse.c
  458. X * They are shipped so that they default to 1.5.3A without
  459. X * the TINKER flag, and the Islandia settings with the
  460. X * TINKER flag...of course, you can define them any way you
  461. X * want, but then you may have to change other messages to
  462. X * make the letters match their flag types.    --Fuzzy 5/31/90
  463. X */
  464. X
  465. X# define TYPE_CODES    "R-EP" /* Room, thing, exit, player */
  466. X# define STICKY_MARK    'S'
  467. X# define DARK_MARK    'D'
  468. X# define LINK_MARK    'L'
  469. X# define ABODE_MARK    'A'
  470. X# define HAVEN_MARK    'H'
  471. X# define UNWANTED_MARK    'U'
  472. X# define MALE_MARK    'M'
  473. X# define FEMALE_MARK    'F'
  474. X# define NEUTER_MARK    'N'
  475. X
  476. X#ifndef TINKER
  477. X# define WIZARD_MARK    'W'  /* For Wizard */
  478. X# define TEMPLE_MARK    'T'  /* For Tinker */
  479. X# define ROBOT_MARK    'C'  /* For Cybernetic */
  480. X# define BUILDER_MARK    'B'  /* For Builder */
  481. X#else TINKER
  482. X# define WIZARD_MARK    'T'  /* For Tinker */
  483. X# define TEMPLE_MARK    'J'  /* For Junkpile */
  484. X# define ROBOT_MARK    'B'  /* For Bot */
  485. X# define BUILDER_MARK    'C'  /* For Constructor/Creator */
  486. X#endif TINKER
  487. END_OF_FILE
  488. if test 6069 -ne `wc -c <'config_h.spl'`; then
  489.     echo shar: \"'config_h.spl'\" unpacked with wrong size!
  490. fi
  491. # end of 'config_h.spl'
  492. fi
  493. if test -f 'tinymud.ps.xac' -a "${1}" != "-c" ; then 
  494.   echo shar: Will not clobber existing file \"'tinymud.ps.xac'\"
  495. else
  496. echo shar: Extracting \"'tinymud.ps.xac'\" \(37401 characters\)
  497. sed "s/^X//" >'tinymud.ps.xac' <<'END_OF_FILE'
  498. X(can)f(b)q(e)h(either)g(a)f(thing)g(or)g(exit.)224 862 y 1495 5 v 224 984 a fg
  499. X(examine)f fl(<)p fj(name)s fl(>)224 1041 y fg(examine)g(#)p fl(<)p fj(numb)n
  500. X(er)5 b fl(>)224 1116 y fm(Prin)o(ts)15 b(a)g(detailed)i(description)g(of)d
  501. X(ob)s(ject)h(sp)q(eci\014ed)i(b)o(y)e fl(<)p fj(name)s fl(>)i fm(or)d(b)o(y)
  502. X224 1172 y fl(<)p fj(numb)n(er)5 b fl(>)16 b fm(giving)g(name,)f(description,)
  503. Xh(o)o(wner,)e(k)o(eys,)h(p)q(ennies,)i(failure)f(mes-)224 1229 y(sage,)f(succ\
  504. Xess)g(message,)g(others)f(failure)j(message,)d(others)h(success)h(message,)
  505. X224 1285 y(and)g(exits.)k(The)15 b(lo)q(cation)h(will)h(also)e(b)q(e)h(displa)
  506. Xo(y)o(ed)h(if)e(y)o(ou)g(con)o(trol)g(the)g(ob)s(ject's)224 1342 y(lo)q(catio\
  507. Xn)h(\(that)e(is,)i(if)f(it's)g(not)g(b)q(eing)i(carried)e(b)o(y)g(someone)h
  508. X(else)g(or)e(in)i(a)f(ro)q(om)g(y)o(ou)224 1398 y(don't)g(con)o(trol\).)224
  509. X1521 y 1495 5 v 224 1643 a fg(get)g fl(<)p fj(obje)n(ct)t fl(>)224 1700 y fg
  510. X(take)g fl(<)p fj(obje)n(ct)t fl(>)224 1774 y fm(Gets)g(the)g(sp)q(eci\014ed)
  511. Xi(ob)s(ject.)j fl(<)p fj(obje)n(ct)t fl(>)c fm(can)f(b)q(e)h(either)g(a)f(thi\
  512. Xng)g(or)g(exit.)224 1897 y 1495 5 v 224 2020 a fg(give)g fl(<)p fj(player)5 b
  513. Xfl(>)16 b fg(=)f fl(<)p fj(amount)t fl(>)224 2094 y fm(Giv)o(es)g fl(<)p fj
  514. X(player)5 b fl(>)16 b fm(the)g(sp)q(eci\014ed)h(n)o(um)o(b)q(er)f(of)e(p)q
  515. X(ennies.)224 2217 y 1495 5 v 224 2340 a fg(go)h fl(<)p fj(dir)n(e)n(ction)s fl
  516. X(>)224 2396 y fg(go)24 b(home)224 2452 y(move)15 b fl(<)p fj(dir)n(e)n(ction)
  517. Xs fl(>)960 2577 y fm(1)g eop
  518. X%%Page: 2 4
  519. X bop 224 307 a fg(move)23 b(home)224 382 y fm(Mo)o(v)o(es)14 b(in)i(the)g(sp)
  520. Xq(eci\014ed)h(direction.)k fg(go)j(home)14 b fm(is)i(a)f(sp)q(ecial)i(command)
  521. Xe(that)224 439 y(returns)g(y)o(ou)g(to)g(y)o(our)f(home)i(\(initially)h(Lim)o
  522. X(b)q(o\).)k(If)15 b(the)g(direction)i(is)e(fully)224 495 y(sp)q(eci\014ed,)i
  523. X(the)e fg(go)g fm(ma)o(y)g(b)q(e)h(omitted.)224 618 y 1495 5 v 224 742 a fg
  524. X(gripe)f fl(<)p fj(message)s fl(>)224 817 y fm(Sends)h fl(<)p fj(message)s fl
  525. X(>)g fm(to)e(the)i(system)e(main)o(tainer.)224 940 y 1495 5 v 224 1063 a fg
  526. X(help)224 1138 y fm(Prin)o(ts)h(a)g(short)g(help)h(message.)224 1262 y 1495 5
  527. Xv 224 1385 a fg(inventory)224 1460 y fm(Lists)g(what)f(y)o(ou)f(are)h(carryin\
  528. Xg.)224 1583 y 1495 5 v 224 1707 a fg(kill)g fl(<)p fj(player)5 b fl(>)16 b fm
  529. X([)f fg(=)g fl(<)p fj(c)n(ost)t fl(>)g fm(])224 1782 y(Kills)i(the)f(sp)q(eci\
  530. X\014ed)h(pla)o(y)o(er.)j(Killing)e(costs)d(either)h fl(<)p fj(c)n(ost)t fl
  531. X(>)f fm(p)q(ennies)i(or)e(10)224 1838 y(p)q(ennies,)i(whic)o(hev)o(er)f(is)g
  532. X(greater.)j(The)c(probabilit)o(y)h(of)f(success)h(is)g(prop)q(ortional)f(to)
  533. X224 1895 y(the)g(cost.)224 2018 y 1495 5 v 224 2141 a fg(look)g fl(<)p fj(obj\
  534. Xe)n(ct)t fl(>)224 2198 y fg(read)g fl(<)p fj(obje)n(ct)t fl(>)224 2273 y(<)p
  535. Xfj(obje)n(ct)t fl(>)h fm(can)f(b)q(e)h(a)f(ro)q(om,)f(thing,)i(pla)o(y)o(er,)
  536. Xe(or)h(direction.)21 b(Prin)o(ts)15 b(a)g(description)224 2329 y(of)g fl(<)p
  537. Xfj(obje)n(ct)t fl(>)p fm(.)224 2452 y 1495 5 v 960 2577 a(2)g eop
  538. X%%Page: 3 5
  539. X bop 224 307 a fg(page)15 b fl(<)p fj(player)5 b fl(>)224 380 y fm(Used)16 b
  540. X(to)e(inform)i(an)f(activ)o(e)g(pla)o(y)o(er)g(that)g(y)o(ou)g(are)g(lo)q(oki\
  541. Xng)h(for)e(them.)20 b(The)224 436 y(targeted)15 b(pla)o(y)o(er)g(will)i(get)d
  542. X(a)h(message)g(telling)i(them)e(y)o(our)g(name)g(and)g(lo)q(cation.)224 541 y
  543. X1495 5 v 224 645 a fg(rob)g fl(<)p fj(player)5 b fl(>)224 718 y fm(A)o(ttempt)
  544. X15 b(to)f(steal)h(a)g(p)q(enn)o(y)h(from)f fl(<)p fj(player)5 b fl(>)p fm(.)
  545. X224 822 y 1495 5 v 224 926 a fg(say)15 b fl(<)p fj(message)s fl(>)224 983 y fg
  546. X(")p fl(<)p fj(message)s fl(>)224 1039 y fg(:)p fl(<)p fj(message)s fl(>)224
  547. X1112 y fm(The)h(\014rst)e(t)o(w)o(o)g(forms)h(displa)o(y)h(the)f fl(<)p fj
  548. X(message)s fl(>)h fm(with)f(the)h(noti\014cation)g(that)e(y)o(ou)224 1168 y
  549. X(said)i(it.)k(F)l(or)15 b(example,)g(if)h(y)o(our)f(pla)o(y)o(er's)f(name)i
  550. X(is)f(Bett)o(y)g(the)g(other)g(pla)o(y)o(ers)g(in)224 1225 y(the)g(same)g(ro)
  551. Xq(om)g(will)i(see)224 1322 y fg(Betty)23 b(says)15 b fm(\\)p fl(<)p fj(messag\
  552. Xe)s fl(>)p fm(")224 1419 y(The)h(third)f(form)g fi(p)q(oses)g fm(the)h(messag\
  553. Xe,)e(preceded)i(b)o(y)g(y)o(our)e(name,)h(with)h(no)224 1475 y(quotes,)f(as)g
  554. X(in)224 1573 y fg(Betty)g fl(<)p fj(message)s fl(>)224 1670 y fm(F)l(or)g(b)q
  555. X(oth)g(the)g(second)h(and)f(third)h(forms,)e(do)h(not)g(put)g(a)g(space)h(aft\
  556. Xer)e(the)i(double)224 1726 y(quotes)f(or)g(colon)g(as)g(it)h(will)h(b)q(e)e
  557. X(included)j(in)e(the)g(message.)224 1830 y 1495 5 v 224 1935 a fg(score)224
  558. X2007 y fm(Prin)o(ts)f(ho)o(w)g(man)o(y)g(p)q(ennies)i(y)o(ou)e(ha)o(v)o(e.)
  559. X224 2112 y 1495 5 v 224 2216 a fg(whisper)f fl(<)p fj(player)5 b fl(>)16 b fg
  560. X(=)f fl(<)p fj(message)s fl(>)224 2289 y(<)p fj(player)5 b fl(>)16 b fm(is)g
  561. X(presen)o(ted)g(with)f fl(<)p fj(message)s fl(>)h fm(sa)o(ying)f(that)f(y)o
  562. X(ou)h(whisp)q(ered)i(it.)j(The)224 2345 y(other)15 b(pla)o(y)o(ers)g(only)h
  563. X(see)f(the)h(message)224 2442 y fg(Betty)23 b(whispers)g(something)g(to)15 b
  564. Xfl(<)p fj(player)5 b fl(>)p fm(.)960 2577 y(3)g eop
  565. X%%Page: 4 6
  566. X bop 224 307 a fc(2)69 b(Comm)n(ands)21 b(for)i(mo)r(difying)d(the)i(dungeon)
  567. X224 409 y fg(@create)14 b fl(<)p fj(name)s fl(>)i fm([)f fg(=)g fl(<)p fj(c)n
  568. X(ost)t fl(>)h fm(])224 483 y(Creates)f(a)g(thing)g(with)h(the)f(sp)q(eci\014e\
  569. Xd)i(name.)j(Creation)15 b(costs)g(either)h fl(<)p fj(c)n(ost)t fl(>)224 539 y
  570. Xfm(p)q(ennies)h(or)e(10)g(p)q(ennies,)h(whic)o(hev)o(er)g(is)g(greater.)j(The)
  571. Xc(v)m(alue)i(of)e(a)g(thing)g(is)224 596 y(prop)q(ortional)h(to)e(its)i(cost.)
  572. X224 713 y 1495 5 v 224 830 a fg(@describe)e fl(<)p fj(obje)n(ct)t fl(>)i fg
  573. X(=)f fl(<)p fj(description)s fl(>)224 904 y(<)p fj(obje)n(ct)t fl(>)h fm(can)
  574. Xf(b)q(e)h(a)f(ro)q(om,)f(thing,)i(pla)o(y)o(er,)e(or)h(direction.)21 b(Sets)
  575. X16 b(the)f(description)224 960 y(a)g(pla)o(y)o(er)g(sees)h(when)f(they)h(use)
  576. Xf(the)g(command)h fg(look)e fl(<)p fj(obje)n(ct)t fl(>)p fm(.)21 b(If)15 b fl
  577. X(<)p fj(obje)n(ct)t fl(>)h fm(is)224 1017 y fg(here)f fm(it)g(sets)g(the)g
  578. X(description)i(for)e(the)g(curren)o(t)g(ro)q(om)g(that)f(is)i(displa)o(y)o
  579. X(ed)g(when)224 1073 y(the)f(ro)q(om)g(is)h(en)o(tered.)k(If)15 b fl(<)p fj
  580. X(obje)n(ct)t fl(>)h fm(is)g fg(me)f fm(it)g(sets)g(the)g(description)i(for)e
  581. X(y)o(our)224 1129 y(c)o(haracter.)224 1246 y 1495 5 v 224 1363 a fg(@dig)g fl
  582. X(<)p fj(name)s fl(>)224 1437 y fm(Creates)g(a)g(new)g(ro)q(om)g(with)g(the)g
  583. X(sp)q(eci\014ed)j(name,)d(and)g(prin)o(ts)g(the)h(ro)q(om's)224 1494 y(n)o
  584. X(um)o(b)q(er.)224 1611 y 1495 5 v 224 1728 a fg(@fail)f fl(<)p fj(obje)n(ct)t
  585. Xfl(>)g fm([)g fg(=)g fl(<)p fj(message)s fl(>)h fm(])224 1802 y(Without)f(a)g
  586. X(message)g(argumen)o(t,)f(clears)i(the)f(failure)h(message)f(on)g fl(<)p fj
  587. X(obje)n(ct)t fl(>)p fm(,)g(oth-)224 1858 y(erwise)h(sets)f(it.)20 b(The)15 b
  588. X(failure)i(message)d(is)i(prin)o(ted)g(when)g(a)f(pla)o(y)o(er)g(unsuccessful\
  589. Xly)224 1915 y(attempts)f(to)h(use)g(the)h(ob)s(ject.)224 2032 y 1495 5 v 224
  590. X2149 a fg(@find)f fl(<)p fj(name)s fl(>)224 2223 y fm(Prin)o(ts)g(the)h(name)
  591. Xf(and)g(ob)s(ject)g(n)o(um)o(b)q(er)g(of)g(ev)o(ery)g(ro)q(om,)f(thing,)i(or)
  592. Xe(pla)o(y)o(er)i(that)224 2279 y(y)o(ou)f(con)o(trol)g(whose)g(name)g(matc)o
  593. X(hes)g fl(<)p fj(name)s fl(>)p fm(.)21 b(Because)16 b(the)f fg(@find)f fm(com\
  594. Xmand)224 2336 y(is)i(computationally)g(exp)q(ensiv)o(e,)g(there)g(is)f(a)g
  595. X(small)h(c)o(harge)f(for)g(using)h(it.)224 2452 y 1495 5 v 960 2577 a(4)g eop
  596. X%%Page: 5 7
  597. X bop 224 307 a fg(@link)15 b fl(<)p fj(dir)n(e)n(ction)s fl(>)g fg(=)g fl(<)p
  598. Xfj(r)n(o)n(om)i(numb)n(er)5 b fl(>)224 364 y fg(@link)15 b fl(<)p fj(thing)t
  599. Xfl(>)g fg(=)g fl(<)p fj(r)n(o)n(om)i(numb)n(er)5 b fl(>)224 420 y fg(@link)15
  600. Xb fl(<)p fj(r)n(o)n(om)s fl(>)h fg(=)f fl(<)p fj(r)n(o)n(om)i(numb)n(er)5 b fl
  601. X(>)224 494 y fm(In)16 b(the)f(\014rst)g(form)g(links)h(the)f(exit)h(sp)q(eci\
  602. X\014ed)h(b)o(y)e fl(<)p fj(dir)n(e)n(ction)s fl(>)h fm(to)f(the)g(ro)q(om)224
  603. X551 y(sp)q(eci\014ed)i(b)o(y)f fl(<)p fj(r)n(o)n(om)g(numb)n(er)5 b fl(>)p fm
  604. X(.)20 b(The)c(exit)f(m)o(ust)g(b)q(e)h(unlink)o(ed,)h(and)e(y)o(ou)g(m)o(ust)
  605. X224 607 y(o)o(wn)g(the)g(target)f(ro)q(om)h(if)g(its)h fg(link_ok)e fm(attrib\
  606. Xute)h(is)h(not)e(set.)20 b(If)c(y)o(ou)e(don't)224 664 y(already)i(o)o(wn)e
  607. X(the)i(exit)f(its)h(o)o(wnership)f(is)h(transferred)f(to)f(y)o(ou.)20 b(The)
  608. X15 b(second)h(form)224 720 y(sets)f(the)g(home)h(for)e fl(<)p fj(thing)t fl
  609. X(>)p fm(.)20 b(If)c fl(<)p fj(thing)t fl(>)f fm(is)h fg(me)f fm(it)h(sets)e
  610. X(y)o(our)h(home.)20 b(The)15 b(third)224 776 y(form)g(sets)f(the)i(dropto;)e
  611. X(see)h(section)h(5.5)e(for)h(an)g(explanation)h(of)f(dropto's.)224 893 y 1495
  612. X5 v 224 1009 a fg(@lock)g fl(<)p fj(obje)n(ct)t fl(>)g fg(=)g fl(<)p fj(key)t
  613. Xfl(>)224 1083 y fm(Sets)g(a)g(k)o(ey)g(\(another)g(ob)s(ject\))f(for)h(an)g
  614. X(ob)s(ject.)k(If)d fl(<)p fj(key)t fl(>)f fm(starts)f(with)i fg(*)f fm(then)g
  615. X(it)224 1140 y(m)o(ust)g(b)q(e)h(a)f(pla)o(y)o(er's)f(name.)20 b fl(<)p fj
  616. X(key)t fl(>)c fm(can)f(con)o(tain)h(the)f(Bo)q(olean)h(op)q(erators)e fg(!)h
  617. Xfm(\(not)224 1196 y(or)g(negation\),)f fg(&)i fm(\(and\),)e(and)h fg(|)g fm
  618. X(\(or\),)f(and)h(use)h(paren)o(theses)f(for)g(grouping.)224 1270 y(In)h(order)
  619. Xf(to)f(use)i fl(<)p fj(obje)n(ct)t fl(>)g fm(y)o(ou)f(m)o(ust)f(satisfy)h(the)
  620. Xh(requiremen)o(ts)f(of)g fl(<)p fj(key)t fl(>)p fm(.)20 b(In)224 1327 y(the)
  621. X15 b(simplest)i(case)e(y)o(ou)g(m)o(ust)f(simply)j(ha)o(v)o(e)e fl(<)p fj(key)
  622. Xt fl(>)p fm(.)20 b(If)c fl(<)p fj(key)t fl(>)f fm(is)h(preceded)h(b)o(y)e fg
  623. X(!)224 1383 y fm(then)h(y)o(ou)f(m)o(ust)f(not)h(ha)o(v)o(e)g fl(<)p fj(key)t
  624. Xfl(>)h fm(in)g(order)f(to)f(use)i fl(<)p fj(obje)n(ct)t fl(>)p fm(.)k(See)c
  625. X(section)g(6.3)224 1440 y(for)f(more)f(complicated)j(examples.)224 1556 y 1495
  626. X5 v 224 1673 a fg(@name)e fl(<)p fj(obje)n(ct)t fl(>)g fg(=)g fl(<)p fj(name)
  627. Xs fl(>)224 1729 y fg(@name)g fl(<)p fj(player)5 b fl(>)16 b fg(=)f fl(<)p fj
  628. X(name)s fl(>)h(<)p fj(p)n(asswor)n(d)5 b fl(>)224 1803 y fm(Changes)15 b(the)
  629. Xh(name)f(of)f(the)i(sp)q(eci\014ed)h(ob)s(ject.)i(This)d(can)g(also)f(b)q(e)h
  630. X(used)f(to)g(sp)q(ecify)224 1860 y(a)g(new)g(direction)i(list)f(for)f(an)g
  631. X(exit)g(\(see)h(for)e(example)i fg(@open)p fm(\).)j(F)l(or)c(a)f(pla)o(y)o
  632. X(er,)h(it)224 1916 y(requires)h(the)f(pla)o(y)o(er's)g(passw)o(ord.)224 2033 y
  633. X1495 5 v 224 2149 a fg(@ofail)f fl(<)p fj(obje)n(ct)t fl(>)i fm([)f fg(=)g fl
  634. X(<)p fj(message)s fl(>)h fm(])224 2223 y(Without)f(a)g(message)g(argumen)o
  635. X(t,)f(clears)i(the)f(others)g(failure)h(message)f(on)224 2280 y fl(<)p fj(obj\
  636. Xe)n(ct)t fl(>)p fm(,)h(otherwise)f(sets)g(it.)20 b(The)15 b(others)g(failure)
  637. Xi(message,)d(pre\014xed)i(b)o(y)f(the)224 2336 y(pla)o(y)o(er's)g(name,)g(is)
  638. Xg(sho)o(wn)g(to)g(others)g(when)g(the)h(pla)o(y)o(er)f(fails)h(to)e(use)i fl
  639. X(<)p fj(obje)n(ct)t fl(>)p fm(.)224 2452 y 1495 5 v 960 2577 a(5)g eop
  640. X%%Page: 6 8
  641. X bop 224 307 a fg(@open)15 b fl(<)p fj(dir)n(e)n(ction)s fl(>)g fm([)g fg(;)g
  642. Xfl(<)p fj(other-dir)5 b fl(>)17 b fm(])p fk(\003)e fm([)f fg(=)h fl(<)p fj
  643. X(destination)s fl(>)h fm(])224 382 y(Creates)f(an)g(unlink)o(ed)i(exit)f(in)g
  644. X(the)f(sp)q(eci\014ed)i(direction\(s\).)k(Y)l(ou)15 b(can)h(also)f(sp)q(ecify)
  645. X224 439 y(an)g(exit)h(to)e(link)j(the)e(exit)h(to.)j(Once)d(created,)f(y)o
  646. X(ou)g(\(or)g(an)o(y)f(other)h(pla)o(y)o(er\))g(ma)o(y)224 495 y(use)h(the)f fg
  647. X(@link)f fm(command)i(to)e(sp)q(ecify)j(the)e(ro)q(om)f(to)h(whic)o(h)h(the)f
  648. X(exit)h(leads.)21 b(See)224 552 y(also)15 b fg(@name)p fm(.)224 677 y 1495 5 v
  649. X224 802 a fg(@osuccess)f fl(<)p fj(obje)n(ct)t fl(>)i fm([)f fg(=)g fl(<)p fj
  650. X(message)s fl(>)g fm(])224 877 y(Without)g(a)g(message)g(argumen)o(t,)f(clear\
  651. Xs)i(the)f(others)g(success)g(message)g(on)224 933 y fl(<)p fj(obje)n(ct)t fl
  652. X(>)p fm(,)h(otherwise)f(sets)g(it.)20 b(The)15 b(others)g(success)h(message,)
  653. Xe(pre\014xed)j(b)o(y)224 990 y(the)e(pla)o(y)o(er's)g(name,)g(is)h(sho)o(wn)f
  654. X(to)f(others)h(when)h(the)f(pla)o(y)o(er)g(successfully)i(uses)224 1046 y fl
  655. X(<)p fj(obje)n(ct)t fl(>)p fm(.)224 1171 y 1495 5 v 224 1296 a fg(@password)d
  656. Xfl(<)p fj(old)5 b fl(>)16 b fg(=)f fl(<)p fj(new)5 b fl(>)224 1371 y fm(Sets)
  657. X15 b(a)g(new)h(passw)o(ord;)e(y)o(ou)h(m)o(ust)f(sp)q(ecify)j(y)o(our)d(old)i
  658. X(passw)o(ord)e(to)h(v)o(erify)g(y)o(our)224 1428 y(iden)o(tit)o(y)l(.)224 1553
  659. Xy 1495 5 v 224 1677 a fg(@set)g fl(<)p fj(obje)n(ct)t fl(>)h fg(=)f fl(<)p fj
  660. X(\015ag)t fl(>)224 1734 y fg(@set)g fl(<)p fj(obje)n(ct)t fl(>)h fg(=)f(!)p fl
  661. X(<)p fj(\015ag)t fl(>)224 1809 y fm(Sets)g(\(\014rst)g(form\))f(or)h(resets)g
  662. X(\(second)g(form\))f fl(<)p fj(\015ag)t fl(>)i fm(on)f fl(<)p fj(obje)n(ct)t
  663. Xfl(>)p fm(.)20 b(The)c(curren)o(t)224 1866 y(\015ags)f(are)g fg(dark)p fm(,)f
  664. Xfg(link_ok)p fm(,)g fg(sticky)p fm(,)g fg(temple)p fm(,)g(and)h fg(wizard)p fm
  665. X(.)224 1990 y 1495 5 v 224 2115 a fg(@success)f fl(<)p fj(obje)n(ct)t fl(>)i
  666. Xfg(=)f fl(<)p fj(message)s fl(>)224 2191 y fm(Without)g(a)g(message)g(argumen)
  667. Xo(t,)f(clears)i(the)f(success)h(message)e(on)i fl(<)p fj(obje)n(ct)t fl(>)p fm
  668. X(,)224 2247 y(otherwise)g(sets)e(it.)21 b(The)15 b(success)h(message)f(is)g
  669. X(prin)o(ted)h(when)g(a)f(pla)o(y)o(er)g(success-)224 2303 y(fully)i(uses)e fl
  670. X(<)p fj(obje)n(ct)t fl(>)p fm(.)21 b(Without)15 b fl(<)p fj(message)p fl(>)g
  671. Xfm(it)g(clears)h(the)f(success)h(message.)224 2428 y 1495 5 v 960 2577 a(6)g
  672. Xeop
  673. X%%Page: 7 9
  674. X bop 224 307 a fg(@teleport)14 b fl(<)p fj(obje)n(ct)t fl(>)i fg(=)f fl(<)p fj
  675. X(destination)s fl(>)224 380 y fm(T)l(elep)q(orts)h(the)f(ob)s(ject)g(to)f(the)
  676. Xi(sp)q(eci\014ed)h(destination.)k(Y)l(ou)15 b(m)o(ust)g(either)h(con)o(trol)
  677. X224 437 y(the)f(ob)s(ject)g(or)g(it's)g(curren)o(t)g(lo)q(cation,)g(and)h(y)o
  678. X(ou)f(m)o(ust)f(b)q(e)i(able)g(to)f(link)h(to)f(the)224 493 y(destination.)21
  679. Xb(Y)l(ou)15 b(can)h(only)f(telep)q(ort)h(ob)s(jects)f(from)f(ro)q(om)h(to)f
  680. X(ro)q(om,)g(not)h(in)o(to)g(or)224 550 y(out)g(of)g(someone's)f(hand.)224 660
  681. Xy 1495 5 v 224 769 a fg(@unlink)g fl(<)p fj(dir)n(e)n(ction)s fl(>)224 843 y
  682. Xfm(Remo)o(v)o(es)h(the)g(link)i(on)e(the)h(exit)f(in)h(the)f(sp)q(eci\014ed)j
  683. Xfl(<)p fj(dir)n(e)n(ction)s fl(>)p fm(.)i(Y)l(ou)c(m)o(ust)e(o)o(wn)224 899 y
  684. X(the)h(exit.)21 b(The)15 b(exit)h(ma)o(y)e(then)i(b)q(e)g(relink)o(ed)h(b)o
  685. X(y)e(an)o(y)g(pla)o(y)o(er)g(using)h(the)f fg(@link)224 956 y fm(command)g
  686. X(and)h(o)o(wnership)f(of)g(the)g(exit)h(transfers)e(to)h(that)f(pla)o(y)o(er.)
  687. X224 1065 y 1495 5 v 224 1175 a fg(@unlock)g fl(<)p fj(obje)n(ct)t fl(>)224
  688. X1248 y fm(Remo)o(v)o(es)h(the)g(lo)q(c)o(k)h(on)f(an)g(ob)s(ject.)224 1390 y
  689. Xfc(3)69 b(Miscellaneous)21 b(comm)m(ands)224 1491 y fg(@stats)14 b fm(Sho)o
  690. X(ws)h(curren)o(t)g(total)g(of)g(pla)o(y)o(ers,)g(ro)q(oms,)f(ob)s(jects,)g
  691. X(exits.)224 1633 y fc(4)69 b(Money)224 1734 y fm(Some)15 b(actions)h(ha)o(v)o
  692. X(e)e(an)i(asso)q(ciated)f(cost:)230 1768 y 1467 2 v 229 1824 a 2 57 v 262 1807
  693. Xa fh(Action)446 1824 y 2 57 v 1020 1807 a(Cost)1696 1824 y 2 57 v 230 1826 a
  694. X1467 2 v 230 1836 a 1467 2 v 230 1846 a 1467 2 v 229 1902 a 2 57 v 255 1885 a
  695. Xfg(kill)446 1902 y 2 57 v 472 1885 a fm(10)g(p)q(ennies)i(or)e(more)1696 1902
  696. Xy 2 57 v 230 1904 a 1467 2 v 229 1960 a 2 57 v 255 1944 a fg(page)446 1960 y 2
  697. X57 v 472 1944 a fm(1)g(p)q(enn)o(y)1696 1960 y 2 57 v 230 1962 a 1467 2 v 229
  698. X2019 a 2 57 v 255 2002 a fg(@open)446 2019 y 2 57 v 472 2002 a fm(1)g(p)q(enn)
  699. Xo(y)1696 2019 y 2 57 v 230 2020 a 1467 2 v 229 2077 a 2 57 v 255 2060 a fg
  700. X(@dig)446 2077 y 2 57 v 472 2060 a fm(10)g(p)q(ennies)1696 2077 y 2 57 v 230
  701. X2078 a 1467 2 v 229 2135 a 2 57 v 255 2118 a fg(@create)446 2135 y 2 57 v 472
  702. X2118 a fm(10)g(p)q(ennies)i(\(or)d(more\))1696 2135 y 2 57 v 230 2136 a 1467 2
  703. Xv 229 2249 a 2 113 v 255 2176 a fg(@link)446 2249 y 2 113 v 472 2176 a fm(1)h
  704. X(p)q(enn)o(y)l(,)h(plus)g(1)f(p)q(enn)o(y)h(to)f(the)g(previous)h(o)o(wner)f
  705. X(if)g(y)o(ou)g(didn't)472 2232 y(already)h(o)o(wn)e(the)i(exit.)1696 2249 y 2
  706. X113 v 230 2251 a 1467 2 v 295 2340 a(Y)l(ou)f(get)g(money)g(b)o(y)g(\014nding)
  707. Xi(p)q(ennies,)g(getting)e(killed,)i(ha)o(ving)e(someone)224 2396 y(giv)o(e)h
  708. X(y)o(ou)e(money)l(,)h(or)g(b)o(y)g(sacri\014cing)i(a)e(thing.)20 b(The)15 b
  709. X(sacri\014ce)i(v)m(alue)f(of)f(a)g(thing)g(is)224 2452 y(\(cost)g(of)f(the)i
  710. X(thing)p fl(=)p fm(5\))9 b fk(\000)i fm(1.)960 2577 y(7)g eop
  711. X%%Page: 8 10
  712. X bop 224 307 a fc(5)69 b(Tin)n(yMUD)23 b(concepts)224 409 y fm(An)16 b fj(obj\
  713. Xe)n(ct)e fm(is)i(either)g(a)f(pla)o(y)o(er,)g(ro)q(om,)f(thing,)h(or)g(exit.)
  714. X295 465 y(In)h(addition)g(to)e(the)i(commands)f(listed)h(ab)q(o)o(v)o(e)f(the\
  715. Xre)g(are)g(some)g(built)i(in)224 522 y(w)o(ords)e(in)h fn(Tin)o(y)p fm(MUD;)d
  716. Xfg(me)i fm(and)g fg(here)p fm(.)20 b fg(me)15 b fm(refers)g(to)f(y)o(our)h
  717. X(c)o(haracter)f(or)h(pla)o(y)o(er,)224 578 y(and)h fg(here)e fm(refers)h(to)g
  718. X(the)g(ro)q(om)g(y)o(ou)f(are)h(in.)21 b(F)l(or)15 b(example,)g(y)o(ou)g(can)
  719. Xg(use)h(the)224 634 y fg(@describe)e fm(command)h(to)g(giv)o(e)g(y)o(ourself)
  720. Xg(a)g(description;)i(as)d(another)h(example,)h(in)224 691 y(order)f(to)g(prev)
  721. Xo(en)o(t)g(y)o(ourself)g(from)f(b)q(eing)j(robb)q(ed)f(use)f fg(@lock)24 b
  722. X(me)f(=)h(me)p fm(.)224 813 y fe(5.1)56 b(Success)18 b(and)i(the)e(lac)n(k)h
  723. X(thereof)224 898 y fm(When)d(y)o(ou)f(can)g fg(take)g fm(a)f(thing,)i(use)f
  724. X(an)g(exit,)h(or)e(rob)h(a)g(pla)o(y)o(er)g(y)o(ou)g(are)g(success-)224 955 y
  725. X(full)i(in)f(using)g(that)e(ob)s(ject.)19 b(The)d(con)o(v)o(erse)f(is)h(true)
  726. Xf(for)f(failure.)21 b(The)16 b fg(@success)p fm(,)224 1011 y fg(@osuccess)p fm
  727. X(,)e fg(@fail)p fm(,)g(and)h fg(@ofail)g fm(commands)g(set)f(the)i(success)g
  728. X(and)f(failure)224 1068 y(messages)g(on)g(ob)s(jects.)224 1190 y fe(5.2)56 b
  729. X(Ob)s(ject)18 b(strings)224 1275 y fm(Ev)o(ery)d(ob)s(ject)g(has)g(six)g(stri\
  730. Xngs:)280 1369 y(1.)22 b(Name.)e(This)15 b(is)h(what)f(y)o(ou)g(use)g(with)h fg
  731. X(drop)p fm(,)e fg(examine)p fm(,)g fg(get)p fm(,)g(and)h(so)g(on.)338 1426 y
  732. X(Y)l(ou)g(can)h(also)f(use)g(the)h(ob)s(ject's)e(n)o(um)o(b)q(er)h(\(for)g
  733. X(example,)g(when)h(t)o(w)o(o)338 1482 y(ob)s(jects)e(ha)o(v)o(e)h(the)g(same)
  734. Xg(name\).)280 1576 y(2.)22 b(Description.)f(This)15 b(is)h(what)f(is)g(giv)o
  735. X(en)h(when)g(y)o(ou)f(use)g(the)h fg(look)e fm(command.)280 1670 y(3.)22 b
  736. X(Success)16 b(message.)j(This)d(is)g(what)e(y)o(ou)h(see)h(when)g(y)o(ou)e
  737. X(successfully)k(use)d(the)338 1726 y(ob)s(ject.)280 1820 y(4.)22 b(Others)15 b
  738. X(success)h(message.)j(This)d(is)g(what)f(the)g(other)g(pla)o(y)o(ers)g(see)g
  739. X(when)h(y)o(ou)338 1876 y(successfully)h(use)f(the)f(ob)s(ject.)280 1970 y
  740. X(5.)22 b(F)l(ailure)16 b(message.)j(This)d(is)g(what)f(y)o(ou)f(see)i(when)g
  741. X(y)o(ou)f(fail)h(to)e(use)i(an)338 2027 y(ob)s(ject.)280 2121 y(6.)22 b(Other\
  742. Xs)15 b(failure)h(message.)k(This)c(is)f(what)g(the)g(other)g(pla)o(y)o(ers)g
  743. X(see)h(when)f(y)o(ou)338 2177 y(fail)h(to)e(use)i(an)f(ob)s(ject.)224 2271 y
  744. X(The)h(maxim)o(um)f(length)h(of)e(eac)o(h)i(string)f(is)h(512)e(c)o(haracters\
  745. X.)960 2577 y(8)g eop
  746. X%%Page: 9 11
  747. X bop 224 307 a fe(5.3)56 b(Ob)s(ject)18 b(prop)r(erties)224 393 y fm(As)d(lis\
  748. Xted)i(in)f(the)f fg(@set)g fm(command,)f(ob)s(jects)h(can)g(ha)o(v)o(e)g(an)o
  749. X(y)g(of)g(the)g(follo)o(wing)224 449 y(prop)q(erties:)224 543 y fg(dark)22 b
  750. Xfm(When)16 b(a)f(ro)q(om)f(has)h(its)h fg(dark)e fm(\015ag)h(set)g(y)o(ou)g
  751. X(can't)g(see)g(things)h(in)g(it)f(with)h(the)338 600 y fg(look)e fm(command.)
  752. X20 b(When)c(a)f(thing)g(or)g(pla)o(y)o(er)g(has)g(its)h fg(dark)e fm(\015ag)h
  753. X(set)g(it)h(can't)338 656 y(b)q(e)g(seen.)k(Only)c(a)f(wizard)h(can)f(set)g
  754. X(the)g fg(dark)g fm(\015ag)g(on)g(a)g(thing)h(or)e(pla)o(y)o(er.)338 713 y
  755. X(Setting)h(the)h fg(dark)e fm(\015ag)h(on)g(exits)h(curren)o(tly)g(has)f(no)g
  756. X(e\013ect.)224 806 y fg(link_ok)22 b fm(Y)l(ou)15 b(can)h(link)g(to)f(a)g(ro)
  757. Xq(om)f(if)i(y)o(ou)f(con)o(trol)g(it,)g(or)g(if)g(the)g(ro)q(om)g(has)g(its)
  758. X338 863 y fg(link_ok)f fm(\015ag)h(set.)k(Being)e(able)f(to)e(link)j(to)d(a)h
  759. X(ro)q(om)g(means)g(that)f(y)o(ou)h(can)338 919 y(set)g(the)g(homes)g(of)g(thi\
  760. Xngs)h(\(or)e(y)o(ourself)t(\))g(to)h(that)f(ro)q(om,)h(and)g(y)o(ou)g(can)g
  761. X(set)338 976 y(the)g(destination)h(of)f(exits)h(to)e(that)h(ro)q(om.)k(See)d
  762. X(also)f(the)g fg(@link)g fm(command)338 1032 y(for)f(additional)j(information)
  763. Xe(on)g(linking)j(and)d(section)h(5.5)e(for)h(droptos.)338 1089 y(Setting)g
  764. X(the)h fg(link_ok)e fm(\015ag)h(on)g(pla)o(y)o(ers,)g(things,)g(and)g(exits)h
  765. X(curren)o(tly)g(has)338 1145 y(no)f(e\013ect.)224 1239 y fg(sticky)22 b fm
  766. X(When)16 b(an)f(ob)s(ject)f(that)h(has)g(its)g fg(sticky)g fm(\015ag)g(set)f
  767. X(is)i(dropp)q(ed)g(it)g(imme-)338 1295 y(diately)g(go)q(es)f(home.)20 b(When)
  768. Xc(a)e(ro)q(om)h(has)g(its)g fg(sticky)g fm(\015ag)g(set)g(its)g(dropto)338
  769. X1352 y(is)h(dela)o(y)o(ed)f(un)o(til)i(the)e(last)g(p)q(erson)h(lea)o(v)o(es)
  770. Xf(the)g(ro)q(om.)k(Setting)d(the)f fg(sticky)338 1408 y fm(\015ag)g(on)g(pla)
  771. Xo(y)o(ers)g(and)g(exits)h(curren)o(tly)g(has)f(no)g(e\013ect.)224 1502 y fg
  772. X(temple)22 b fm(When)16 b(a)f(ro)q(om)f(has)h(its)h fg(temple)e fm(\015ag)h
  773. X(set)g(y)o(ou)g(can)g(sacri\014ce)h(things)g(there)338 1559 y(and)f(receiv)o
  774. X(e)h(p)q(ennies)h(for)e(y)o(our)g(sacri\014ces.)20 b(\(See)c(section)g(4)e
  775. X(for)h(ho)o(w)g(man)o(y)338 1615 y(p)q(ennies)i(y)o(ou)e(receiv)o(e)h(for)e
  776. X(y)o(our)h(sacri\014ces.\))21 b(Only)16 b(a)f(wizard)g(can)h(set)f(this)338
  777. X1672 y(\015ag.)k(Setting)d(this)g(\015ag)e(on)i(pla)o(y)o(ers,)e(things,)i
  778. X(and)f(exits)h(curren)o(tly)f(has)g(no)338 1728 y(e\013ect.)224 1822 y fg(wiz\
  779. Xard)22 b fm(When)16 b(a)f(pla)o(y)o(er)g(has)g(its)g fg(wizard)g fm(\015ag)f
  780. X(set)h(they)h(are)f(a)f(wizard.)21 b(Only)16 b(a)338 1878 y(wizard)f(can)h
  781. X(set)f(this)g(\015ag.)20 b(Setting)15 b(this)h(\015ag)f(on)g(things,)g(ro)q
  782. X(oms,)f(and)i(exits)338 1935 y(curren)o(tly)f(has)h(no)f(e\013ect.)295 2029 y
  783. X(The)g(\015ags)g fg(player)p fm(,)f fg(room)p fm(,)g(and)i fg(exit)e fm(are)h
  784. X(set)g(automatically)h(when)f(a)g(pla)o(y)o(er,)224 2085 y(ro)q(om,)f(or)h
  785. X(exit)h(is)f(created.)20 b(They)c(cannot)f(b)q(e)h(subsequen)o(tly)g(unset)f
  786. X(or)g(set)g(with)224 2141 y(the)g fg(@set)g fm(command.)224 2263 y fe(5.4)56 b
  787. X(Con)n(trol)224 2349 y fm(There)16 b(are)e(three)i(rules)g(for)e(determining)
  788. Xj(con)o(trol:)280 2443 y(1.)22 b(Y)l(ou)15 b(can)h(con)o(trol)e(an)o(ything)i
  789. X(y)o(ou)f(o)o(wn.)960 2577 y(9)g eop
  790. X%%Page: 10 12
  791. X bop 280 307 a fm(2.)22 b(A)15 b(wizard)h(can)f(con)o(trol)g(an)o(ything.)280
  792. X401 y(3.)22 b(An)o(yb)q(o)q(dy)16 b(can)f(con)o(trol)g(an)g(unlink)o(ed)i(exi\
  793. Xt)f(\(ev)o(en)f(if)h(it)f(is)h(lo)q(c)o(k)o(ed\).)224 495 y(Builders)h(should)
  794. Xf(w)o(atc)o(h)f(out)g(for)f(item)i(3.)224 617 y fe(5.5)56 b(Dropto's)224 702 y
  795. Xfm(When)16 b(the)f fg(@link)f fm(command)i(is)f(used)h(on)f(a)g(ro)q(om,)f
  796. X(it)i(sets)f(a)f(dropto)h(lo)q(cation)224 759 y(for)g(that)f(ro)q(om.)19 b
  797. X(An)o(y)d(thing)f(dropp)q(ed)i(in)f(the)f(ro)q(om)f(\(if)i(it)f(is)h(not)f fg
  798. X(sticky)p fm(;)f(see)224 815 y(ab)q(o)o(v)o(e\))h(will)h(go)f(to)g(that)f(lo)
  799. Xq(cation.)21 b(If)15 b(the)h(ro)q(om)e(has)h(its)h fg(sticky)e fm(\015ag)h
  800. X(set)g(the)224 872 y(e\013ect)g(of)g(the)g(dropto)g(will)i(b)q(e)e(dela)o(y)o
  801. X(ed)h(un)o(til)h(the)e(last)g(pla)o(y)o(er)g(lea)o(v)o(es)h(the)f(ro)q(om.)
  802. X224 928 y(The)h(sp)q(ecial)h(lo)q(cation)f fg(home)e fm(ma)o(y)h(b)q(e)h(used)
  803. Xf(as)g(a)g(dropto,)f(as)h(in)h fg(@link)23 b(here)h(=)224 985 y(home)p fm(;)
  804. X14 b(in)i(that)f(case)g(things)h(dropp)q(ed)g(in)g(the)f(ro)q(om)g(will)i(go)
  805. Xd(to)h(their)g(homes.)20 b(T)l(o)224 1041 y(remo)o(v)o(e)15 b(the)g(dropto)f
  806. X(on)i(a)e(ro)q(om)h(go)g(in)o(to)g(that)f(ro)q(om)h(and)g(use)h fg(@unlink)23
  807. Xb(here)p fm(.)224 1163 y fe(5.6)56 b(Homes)224 1249 y fm(Ev)o(ery)15 b(thing)
  808. Xh(or)e(pla)o(y)o(er)i(has)f(a)g(home.)k(F)l(or)c(things,)g(this)h(is)g(the)f
  809. X(lo)q(cation)h(the)224 1305 y(thing)g(returns)f(to)f(when)i(sacri\014ced,)g
  810. X(when)g(a)f(pla)o(y)o(er)g(carrying)g(it)h(go)q(es)f(home,)g(or)224 1362 y
  811. X(when)h(\(if)f(its)h fg(sticky)e fm(\015ag)h(is)g(set\))g(it)h(is)f(dropp)q
  812. X(ed.)21 b(F)l(or)15 b(pla)o(y)o(ers,)f(this)i(is)g(where)224 1418 y(the)f(pla)
  813. Xo(y)o(er)h(go)q(es)f(when)g(they)h(issue)g(the)f fg(home)g fm(command.)k(Home\
  814. Xs)c(ma)o(y)g(b)q(e)h(set)224 1474 y(using)g(the)f fg(@link)g fm(command;)g
  815. X(for)f(example,)i fg(@link)23 b(donut)g(=)15 b fl(<)p fj(r)n(o)n(om-numb)n
  816. X(er)5 b fl(>)224 1531 y fm(or)15 b fg(@link)23 b(me)h(=)15 b fl(<)p fj(r)n
  817. X(o)n(om-numb)n(er)5 b fl(>)p fm(.)20 b(Exits)c(ma)o(y)e(also)h(b)q(e)h(link)o
  818. X(ed)h(to)d(the)i(sp)q(ecial)224 1587 y(lo)q(cation)g fg(home)p fm(;)e(for)h
  819. X(example,)h fg(@link)23 b(north)g(=)h(home)p fm(.)224 1709 y fe(5.7)56 b(Recy\
  820. Xcling)224 1795 y fm(Nothing)16 b(can)f(b)q(e)h(destro)o(y)o(ed)f(in)h fn(Tin)
  821. Xo(y)p fm(MUD,)d(but)i(it)h(is)g(p)q(ossible)h(to)d(recycle)j(just)224 1851 y
  822. X(ab)q(out)e(an)o(ything.)20 b(The)c fg(@name)e fm(command)h(can)h(b)q(e)f(use\
  823. Xd)h(to)f(rename)g(ob)s(jects,)224 1908 y(making)h(it)f(easy)g(to)g(turn)g(a)g
  824. X(silk)h(purse)f(in)o(to)h(a)f(so)o(w's)e(ear)i(or)g(vice)h(v)o(ersa.)j(Extra)
  825. X224 1964 y(exits)d(can)f(b)q(e)h(unlink)o(ed)h(and)f(pic)o(k)o(ed)g(up)f(b)o
  826. X(y)h(their)f(o)o(wner)g(using)h(the)f fg(get)g fm(com-)224 2021 y(mand,)g(and)
  827. Xg(dropp)q(ed)i(lik)o(e)f(things)g(using)f(the)h fg(drop)e fm(command)h(in)h
  828. X(an)o(y)f(ro)q(om)224 2077 y(con)o(trolled)h(b)o(y)f(the)h(dropp)q(er.)224
  829. X2199 y fe(5.8)56 b(Being)19 b(killed)224 2285 y fm(When)d(y)o(ou)f(are)f(kill\
  830. Xed)k(y)o(ou)d(return)g(to)g(y)o(our)f(home)h(and)h(an)o(y)f(items)g(y)o(ou)g
  831. X(w)o(ere)224 2341 y(carrying)g(return)h(to)e(their)i(homes.)k(As)15 b(a)g(con\
  832. Xsolation)g(y)o(ou)g(receiv)o(e)h(50)f(p)q(ennies)224 2398 y(from)g(the)g fn
  833. X(Tin)o(y)p fm(MUD)f(T)l(otal)h(Life)h(Indemnit)o(y)h(insurance)f(compan)o(y)l
  834. X(.)949 2577 y(10)g eop
  835. X%%Page: 11 13
  836. X bop 224 307 a fc(6)69 b(Examples)224 409 y fm(Here)16 b(w)o(e)f(presen)o(t)g
  837. X(examples)h(to)e(demonstrate)h(some)g(of)f(the)i(features)f(of)224 465 y fn
  838. X(Tin)o(y)p fm(MUD.)224 587 y fe(6.1)56 b(Success)18 b(and)i(failure)f(message\
  839. Xs)224 673 y fm(Success)d(and)g(failure)g(messages)f(are)g(fairly)g(straigh)o
  840. X(tforw)o(ard.)j(Just)d(remem)o(b)q(er)224 729 y(that)g(for)f(the)h(messages)g
  841. X(set)g(with)h fg(@osuccess)e fm(and)h fg(@ofail)f fm(the)i(pla)o(y)o(er's)e
  842. X(name)i(is)224 786 y(pre\014xed)g(on)o(to)f(the)g(message)g(when)g(it)h(is)f
  843. X(prin)o(ted,)h(while)h(the)e(messages)g(set)g(with)224 842 y fg(@success)f fm
  844. X(and)i fg(@fail)e fm(are)h(prin)o(ted)h(as-is.)295 898 y(Previously)g(w)o(e)f
  845. X(sa)o(w)f(that)h(y)o(ou)g(can)g(use)g fg(say)p fm(,)g fg(")p fm(,)f(and)i fg
  846. X(:)f fm(to)f(displa)o(y)j(messages.)224 955 y(An)f(older)f(metho)q(d)h(for)e
  847. X(p)q(osing)i(non)g(sequiturs)g(is)f(to)g(set)g(the)g(others)g(success)224 1011
  848. Xy(message)g(on)g(y)o(ourself)g(and)h(then)f(rob)g(y)o(ourself.)20 b(F)l(or)15
  849. Xb(example,)g(if)h(y)o(our)f(c)o(haracter)224 1068 y(is)h(Bett)o(y)e(and)i(y)o
  850. X(ou)f(do)224 1162 y fg(@osuccess)23 b(me)g(=)h(starts)f(picking)g(her)h(nose.)
  851. X224 1218 y(rob)g(me)224 1312 y fm(on)15 b(y)o(our)g(screen)h(y)o(ou'll)f(see)
  852. X224 1406 y fg(You)24 b(stole)f(a)h(penny.)224 1462 y(Betty)f(stole)h(one)f
  853. X(of)h(your)f(pennies!)224 1556 y fm(while)17 b(the)e(other)g(pla)o(y)o(ers)g
  854. X(will)i(see)224 1650 y fg(Betty)23 b(starts)g(picking)g(her)h(nose.)224 1744 y
  855. Xfm(An)16 b(easier)f(w)o(a)o(y)f(to)h(accomplish)i(this)e(is)h(to)e(simply)j
  856. X(do)224 1837 y fg(:starts)23 b(picking)g(her)g(nose.)224 1931 y fm(then)16 b
  857. X(b)q(oth)f(y)o(ou)g(and)g(the)h(others)e(see)224 2025 y fg(Betty)23 b(starts)
  858. Xg(picking)g(her)h(nose.)224 2119 y fm(When)16 b(using)g fg(")f fm(and)g fg
  859. X(:)g fm(don't)g(follo)o(w)g(them)g(with)h(a)f(space)g(b)q(ecause)h(it)g(will)
  860. Xh(b)q(e)224 2175 y(included)h(in)e(the)f(output;)g(put)g(the)h(message)e(righ)
  861. Xo(t)h(up)h(against)f(the)g(quotes)g(or)224 2232 y(colon.)949 2577 y(11)g eop
  862. X%%Page: 12 14
  863. X bop 224 307 a fe(6.2)56 b(Making)19 b(y)n(our)g(home)224 393 y fm(The)d(mini\
  864. Xmal)g(steps)g(for)e(making)h(y)o(our)g(home)g(are)280 472 y(1.)22 b(Mak)o(e)
  865. X14 b(the)i(ro)q(om)e(for)h(y)o(our)f(home)i(with)f(the)g fg(@dig)g fm(command\
  866. X.)20 b(W)l(rite)15 b(do)o(wn)338 528 y(the)g(ro)q(om)g(n)o(um)o(b)q(er)g(in)h
  867. X(case)f(the)h(follo)o(wing)g(step)f(tak)o(es)f(a)h(long)h(time.)280 616 y(2.)
  868. X22 b(Mak)o(e)14 b(or)h(acquire)h(an)f(exit.)20 b(In)c(order)f(to)g(use)g(the)
  869. Xg fg(@open)g fm(command)g(y)o(ou)338 672 y(m)o(ust)f(o)o(wn)h(the)g(ro)q(om)g
  870. X(that)f(y)o(ou)h(are)g(doing)h(the)f fg(@open)g fm(in.)20 b(The)c(alternativ)
  871. Xo(e)338 729 y(is)g(to)e(\014nd)i(a)f(ro)q(om)f(with)i(an)f(exit)h(that)e(isn'\
  872. Xt)h(link)o(ed)i(and)f(use)f(it.)280 817 y(3.)22 b(Mak)o(e)14 b(a)h(link)i(to)
  873. Xd(y)o(our)h(home.)20 b(Once)c(y)o(ou'v)o(e)e(made)i(or)e(found)i(an)f(unlink)
  874. Xo(ed)338 873 y(exit)g(simply)i(use)e(the)h fg(@link)e fm(command)h(to)g(link)
  875. Xh(the)g(exit)f(to)g(y)o(our)g(ro)q(om.)280 961 y(4.)22 b(Find)16 b(a)f(ro)q
  876. X(om)f(to)h(whic)o(h)h(y)o(ou)f(can)g(mak)o(e)g(a)g(link)h(in)g(order)f(to)g
  877. X(ha)o(v)o(e)g(an)g(exit)338 1017 y(from)f(y)o(our)h(ro)q(om)f(\(this)i(is)f
  878. X(a)g(ro)q(om)g(with)g(the)h fg(link_ok)e fm(\015ag)h(set\).)k(F)l(or)c(the)
  879. X338 1074 y(sak)o(e)g(of)f(example)i(w)o(e'll)g(pretend)g(the)f(n)o(um)o(b)q
  880. X(er)h(of)f(this)g(ro)q(om)g(is)g(711;)f(w)o(e'll)338 1130 y(b)q(e)i(using)g
  881. X(it)f(in)h(step)f(6.)20 b(Without)15 b(this)h(y)o(ou'd)e(b)q(e)i(able)g(to)f
  882. X(go)f(to)h(y)o(our)g(home)338 1187 y(but)g(y)o(ou)g(w)o(ouldn't)g(ha)o(v)o
  883. X(e)g(an)o(y)g(w)o(a)o(y)f(to)h(get)f(out)h(of)g(it.)280 1274 y(5.)22 b(Set)15
  884. Xb(the)g(link)i(from)d(y)o(ou)h(to)g(y)o(our)g(home.)k(Go)c(in)o(to)g(y)o(our)
  885. Xg(ro)q(om)f(and)i(do)338 1369 y fg(@link)23 b(me)h(=)f(here)280 1463 y fm(6.)
  886. Xf(Mak)o(e)14 b(the)i(exit)f(and)h(link)g(it)g(to)e(the)i(destination)338 1557
  887. Xy fg(@open)23 b(out)338 1614 y(@link)g(out)g(=)h(#711)338 1708 y fm(\(The)15 b
  888. Xfg(#)g fm(isn't)g(mandatory)l(.\))295 1787 y(Of)g(course)g(there)h(are)f(prob\
  889. Xably)g(v)m(arious)h(details)g(that)f(y)o(ou)g(w)o(ould)g(w)o(an)o(t)224 1843 y
  890. X(to)g(tak)o(e)f(care)h(of)g(in)h(addition)g(to)f(the)g(ab)q(o)o(v)o(e)g(steps\
  891. X.)20 b(F)l(or)14 b(example,)i(if)g(y)o(ou're)224 1900 y(an)o(tiso)q(cial)g
  892. X(and)g(w)o(an)o(t)e(to)g(prev)o(en)o(t)h(other)g(p)q(eople)i(from)d(using)i
  893. X(y)o(our)f(home)g(ro)q(om)224 1956 y(y)o(ou'd)g(do)224 2035 y fg(@lock)23 b
  894. X(down)h(=)f(me)224 2114 y fm(assuming)16 b(that)e fg(down)h fm(is)g(the)h(exi\
  895. Xt)f(y)o(ou)g(made)g(in)h(step)g(2.)j(Along)d(a)f(similar)h(v)o(ein)224 2170 y
  896. X(y)o(ou)f(migh)o(t)g(not)g(w)o(an)o(t)f(other)h(p)q(eople)h(linking)i(to)c
  897. X(y)o(our)h(ro)q(om)f(in)j(whic)o(h)f(case)224 2227 y(y)o(ou'd)f(turn)g(o\013)
  898. Xf(the)i fg(link_ok)e fm(\015ag)h(on)g(y)o(our)g(ro)q(om.)k(Y)l(ou)c(migh)o
  899. X(t)g(also)g(set)g(the)224 2283 y(description)i(of)e(y)o(our)f(home)i(ro)q(om.)
  900. Xj(If)c(y)o(ou)g(o)o(wn)g(the)g(exit)h(y)o(ou)f(could)h(also)f(set)224 2340 y
  901. X(the)g(success,)h(others)f(success,)g(fail,)h(and)f(others)g(fail)h(messages)
  902. Xf(on)g(the)g(exit)h(to)224 2396 y(y)o(our)f(home.)20 b(Without)15 b(the)g(des\
  903. Xcriptions)i(places)f(and)f(things)h(are)f(b)q(oring)g(and)224 2452 y(unin)o
  904. X(teresting.)949 2577 y(12)g eop
  905. X%%Page: 13 15
  906. X bop 224 307 a fe(6.3)56 b(Lo)r(c)n(k)18 b(k)n(ey)g(b)r(o)r(olean)g(examples)
  907. X224 393 y fm(When)e(using)g(the)f fg(@lock)f fm(command)h(the)h(k)o(ey)f(is)h
  908. X(either)f(another)g(ob)s(ject)g(or)g(some)224 449 y(b)q(o)q(olean)h(com)o(bin\
  909. Xation)g(of)f(other)g(ob)s(jects.)k(If)c(the)h(k)o(ey)f(starts)f(with)h(a)g fg
  910. X(*)g fm(then)h(that)224 506 y(ob)s(ject)f(m)o(ust)f(b)q(e)i(a)f(pla)o(y)o(er.)
  911. X295 562 y(F)l(or)f(example,)i(if)g(a)e(ro)q(om)h(has)g(a)g(direction)i fg(out)
  912. Xd fm(and)i(y)o(ou)e(w)o(an)o(t)h(to)f(prev)o(en)o(t)224 619 y(pla)o(y)o(ers)h
  913. X(from)g(carrying)g(the)g(ob)s(ject)g fg(xyz)g fm(when)g(they)h(go)e(out,)h
  914. X(y)o(ou)g(w)o(ould)g(use)224 713 y fg(@lock)23 b(out)h(=)g(!xyz)224 806 y fm
  915. X(or)15 b(if)h(y)o(ou)e(w)o(an)o(t)g(to)h(prev)o(en)o(t)g(the)g(pla)o(y)o(er)h
  916. X(Julia)g(from)f(using)h(the)f fg(out)g fm(exit)g(y)o(ou)224 863 y(w)o(ould)h
  917. X(use)224 957 y fg(@lock)23 b(out)h(=)g(!*Julia)224 1051 y fm(If)16 b(y)o(ou)e
  918. X(w)o(an)o(t)h(to)f(prev)o(en)o(t)h(only)h(Julia)h(from)d(going)h(out)g(with)h
  919. Xfg(xyz)e fm(y)o(ou)h(w)o(ould)h(use)224 1144 y fg(@lock)23 b(out)h(=)g(\()f
  920. X(*Julia)g(&)h(!xyz)f(\))224 1266 y fe(6.4)56 b(Ersatz)18 b(commands)224 1352 y
  921. Xfm(Y)l(ou)e(can)f(mak)o(e)g(new)g(commands)g(b)o(y)g(making)h(an)f(exit)g(and)
  922. Xh(then)f(lo)q(c)o(king)i(it)e(to)224 1408 y(something)h(imp)q(ossible)h(to)e
  923. X(ha)o(v)o(e)f(and)i(then)f(assigning)h(the)g(failure)g(and)f(others)224 1465 y
  924. X(failure)h(messages)f(to)g(it.)20 b(F)l(or)14 b(example,)i(assume)f(the)g(fol\
  925. Xlo)o(wing)h(commands)f(ha)o(v)o(e)224 1521 y(b)q(een)h(used)224 1615 y fg(@op\
  926. Xen)23 b(eat)224 1672 y(@link)g(eat)h(=)g(here)224 1728 y(@lock)f(eat)h(=)g
  927. X(something_impossible)224 1784 y(@fail)f(eat)h(=)g(You)f(try)g(to)h(eat)f(but)
  928. Xh(only)f(gag)224 1841 y(@ofail)g(eat)h(=)f(tries)h(to)f(eat)h(but)f(instead)g
  929. X(gags)224 1935 y fm(Then)16 b(when)g(y)o(ou)e(use)i(the)f(command)g fg(eat)g
  930. Xfm(the)g(others)g(in)h(the)f(ro)q(om)g(will)i(see)224 1991 y fg(Betty)23 b
  931. X(tries)h(to)f(eat)h(but)f(instead)g(gags)15 b fm(and)g(y)o(ou'll)h(see)f fg
  932. X(You)24 b(try)f(to)h(eat)224 2048 y(but)g(only)f(gag)p fm(.)295 2104 y(Note)
  933. X15 b(that)f(this)i(\\new)f(command")g(will)i(only)e(w)o(ork)g(in)h(the)f(ro)q
  934. X(om)f(that)h(y)o(ou)224 2161 y(made)g(it)h(in.)949 2577 y(13)g eop
  935. X%%Page: 14 16
  936. X bop 224 325 a fa(App)s(endix)224 459 y fc(A)69 b(Wizard)22 b(comm)n(ands)224
  937. X560 y fg(@chown)14 b fl(<)p fj(obje)n(ct)t fl(>)i fg(=)f fl(<)p fj(player)5 b
  938. Xfl(>)224 634 y fm(Changes)15 b(the)h(o)o(wnership)f(of)g fl(<)p fj(obje)n(ct)
  939. Xt fl(>)h fm(to)e fl(<)p fj(player)5 b fl(>)p fm(.)224 751 y 1495 5 v 224 868 a
  940. Xfg(@dump)224 942 y fm(F)l(orces)15 b(a)g(dump)h(of)e(the)i(database.)j(This)d
  941. X(command)f(isn't)g(really)h(necessary)g(since)224 998 y fg(@shutdown)e fm(do)
  942. Xq(es)i(one)f(as)g(w)o(ell)h(as)f(the)g(regular)g(p)q(erio)q(dic)j(dumps.)224
  943. X1115 y 1495 5 v 224 1231 a fg(examine)c fl(<)p fj(name)s fl(>)224 1288 y fg
  944. X(examine)g(#)p fl(<)p fj(numb)n(er)5 b fl(>)224 1362 y fm(Prin)o(t)15 b(a)g
  945. X(detailed)i(description)g(of)d(ob)s(ject)h(sp)q(eci\014ed)i(b)o(y)e fl(<)p fj
  946. X(name)s fl(>)i fm(or)d(b)o(y)224 1418 y fl(<)p fj(numb)n(er)5 b fl(>)p fm(.)
  947. X20 b(All)d(six)f(strings)f(listed)h(in)g(section)g(5.2)e(are)h(prin)o(ted.)
  948. X224 1492 y(When)h fl(<)p fj(name)s fl(>)g fm(is)g(a)e(ro)q(om)h(or)g fg(here)
  949. Xf fm(it)i(lists)g(the)f(o)o(wner,)f(k)o(ey)l(,)h(n)o(um)o(b)q(er)h(of)224 1549
  950. Xy(p)q(ennies,)h(the)e(description,)i(con)o(ten)o(ts,)d(and)h(exits.)20 b(When)
  951. Xc fl(<)p fj(name)s fl(>)g fm(is)g(a)f(direction)224 1605 y(lists)h(the)f(dire\
  952. Xction)i(n)o(um)o(b)q(er,)e(o)o(wner,)f(k)o(ey)l(,)h(p)q(ennies,)i(and)e(desti\
  953. Xnation.)224 1722 y 1495 5 v 224 1838 a fg(@force)f fl(<)p fj(victim)s fl(>)j
  954. Xfg(=)e fl(<)p fj(c)n(ommand)5 b fl(>)224 1955 y 1495 5 v 224 2071 a fg(@newpa\
  955. Xssword)14 b fl(<)p fj(player)5 b fl(>)16 b fg(=)f fl(<)p fj(p)n(asswor)n(d)5 b
  956. Xfl(>)224 2145 y fm(Changes)15 b(the)h(passw)o(ord)e(for)g fl(<)p fj(player)5 b
  957. Xfl(>)p fm(.)224 2262 y 1495 5 v 224 2378 a fg(@shutdown)224 2452 y fm(Sh)o
  958. X(uts)15 b(do)o(wn)g(the)h fn(Tin)o(y)p fm(MUD)e(serv)o(er.)949 2577 y(14)g eop
  959. X%%Page: 15 17
  960. X bop 224 307 a 1495 5 v 224 432 a fg(@stats)224 507 y fm(Lists)16 b(the)f(tot\
  961. Xal)g(n)o(um)o(b)q(er)g(of)g(ob)s(jects,)f(whic)o(h)i(is)g(the)f(sum)g(of)g
  962. X(the)h(ro)q(oms,)e(exits,)224 564 y(things,)h(and)h(pla)o(y)o(ers,)f(giving)h
  963. X(the)f(coun)o(t)g(for)g(eac)o(h)g(one.)224 689 y 1495 5 v 224 814 a fg(@telep\
  964. Xort)f fm([)h fl(<)p fj(victim)s fl(>)h fg(=)f fm(])g fl(<)p fj(destination)s
  965. Xfl(>)224 889 y fm(T)l(elep)q(orts)h(the)f(ob)s(ject)g(to)f(the)i(sp)q(eci\014\
  966. Xed)h(destination.)k(Ob)s(ject)15 b(can)g(also)h(b)q(e)g fg(me)p fm(.)224 1014
  967. Xy 1495 5 v 224 1139 a fg(@toad)f fl(<)p fj(player)5 b fl(>)224 1214 y fm(T)l
  968. X(urns)16 b fl(<)p fj(player)5 b fl(>)16 b fm(in)o(to)f(an)g(ob)s(ject.)224
  969. X1339 y 1495 5 v 224 1464 a fg(@wall)g fl(<)p fj(message)s fl(>)224 1539 y fm
  970. X(Send)h fl(<)p fj(message)s fl(>)g fm(to)e(all)j(pla)o(y)o(ers.)949 2577 y
  971. X(15)g eop
  972. X%%Page: 16 18
  973. X bop 224 376 a fc(Index)224 462 y fg(")p fm(,)15 b(3,)f(11)224 519 y fg(:)p fm
  974. X(,)h(3,)f(11)224 616 y fg(@chown)p fm(,)g(14)224 673 y fg(@create)p fm(,)g
  975. X(4,)g(7)224 770 y fg(dark)p fm(,)g(9)224 826 y fg(@describe)p fm(,)g(4)224 883
  976. Xy fg(@dig)p fm(,)g(4,)h(7)224 939 y fg(drop)p fm(,)f(1)224 996 y(droptos,)g
  977. X(10)224 1052 y fg(@dump)p fm(,)g(14)224 1150 y fg(examine)p fm(,)g(1,)g(14)
  978. X224 1247 y fg(@fail)p fm(,)g(4,)h(8,)f(11)224 1303 y fg(@find)p fm(,)g(4)224
  979. X1360 y fg(@force)p fm(,)g(14)224 1457 y fg(get)p fm(,)h(1)224 1514 y fg(give)
  980. Xp fm(,)f(1)224 1570 y fg(go)p fm(,)h(2)224 1627 y fg(gripe)p fm(,)f(2)224 1724
  981. Xy fg(help)p fm(,)g(2)224 1781 y fg(here)p fm(,)g(4,)h(8,)f(10,)h(12,)f(14)224
  982. X1837 y(home,)h(5,)g(9,)f(10,)g(12)224 1893 y fg(home)p fm(,)g(2,)h(10)224 1991
  983. Xy fg(inventory)p fm(,)f(2)224 2088 y fg(kill)p fm(,)g(2,)h(7)224 2186 y fg
  984. X(@link)p fm(,)f(5,)h(7,)f(12)224 2242 y fg(link_ok)p fm(,)g(5,)g(9)224 2299 y
  985. Xfg(@lock)p fm(,)g(5,)h(12)224 2355 y fg(look)p fm(,)f(2)224 2452 y fg(me)p fm
  986. X(,)h(4,)f(5,)h(8,)f(10,)g(15)1044 462 y fg(move)p fm(,)g(2)1044 560 y fg(@nam\
  987. Xe)p fm(,)g(5)1044 617 y fg(@newpassword)p fm(,)f(14)1044 715 y fg(@ofail)p fm
  988. X(,)h(5,)g(8,)h(11)1044 771 y fg(@open)p fm(,)f(6,)h(7)1044 827 y fg(@osuccess)
  989. Xp fm(,)f(6,)g(8,)h(11)1044 925 y fg(page)p fm(,)f(3,)h(7)1044 982 y fg(@passw\
  990. Xord)p fm(,)f(6)1044 1080 y fg(read)p fm(,)g(2)1044 1136 y fg(rob)p fm(,)g(3)
  991. X1044 1234 y fg(say)p fm(,)g(3,)h(11)1044 1291 y fg(score)p fm(,)f(3)1044 1347
  992. Xy fg(@set)p fm(,)g(6)1044 1404 y fg(@shutdown)p fm(,)g(14)1044 1460 y fg(@sta\
  993. Xts)p fm(,)g(7,)g(15)1044 1517 y fg(sticky)p fm(,)g(9)1044 1573 y fg(@success)
  994. Xp fm(,)g(6,)g(8,)h(11)1044 1671 y fg(take)p fm(,)f(1)1044 1727 y fg(@teleport)
  995. Xp fm(,)g(7,)g(15)1044 1784 y fg(temple)p fm(,)g(9)1044 1840 y fg(throw)p fm
  996. X(,)g(1)1044 1897 y fg(@toad)p fm(,)g(15)1044 1995 y fg(@unlink)p fm(,)g(7)
  997. X1044 2051 y fg(@unlock)p fm(,)g(7)1044 2149 y fg(@wall)p fm(,)g(15)1044 2206 y
  998. Xfg(whisper)p fm(,)g(3)1044 2262 y fg(wizard)p fm(,)g(9)949 2577 y(16)g eop
  999. X%%Trailer
  1000. X end
  1001. X%%EOF
  1002. END_OF_FILE
  1003. if test 37401 -ne `wc -c <'tinymud.ps.xac'`; then
  1004.     echo shar: \"'tinymud.ps.xac'\" unpacked with wrong size!
  1005. fi
  1006. # end of 'tinymud.ps.xac'
  1007. fi
  1008. echo shar: End of archive 1 \(of 10\).
  1009. cp /dev/null ark1isdone
  1010. MISSING=""
  1011. for I in 1 2 3 4 5 6 7 8 9 10 ; do
  1012.     if test ! -f ark${I}isdone ; then
  1013.     MISSING="${MISSING} ${I}"
  1014.     fi
  1015. done
  1016. if test "${MISSING}" = "" ; then
  1017.     echo You have unpacked all 10 archives.
  1018.     echo ">>> now type 'sh joinspl.sh'"
  1019.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1020. else
  1021.     echo You still need to unpack the following archives:
  1022.     echo "        " ${MISSING}
  1023. fi
  1024. ##  End of shell archive.
  1025. exit 0
  1026.